package com.app.designpattern.Behavioral.templatemethod;

import android.util.Log;

/**
 * USER: zjw
 * DATA: 2019/4/25 0025
 * TIME: 下午 4:33
 * 抽象的课程类,里面有些制作课程的步骤
 */
public abstract class ACourse {

    //模板方法,final修饰,子类不可从写
    public final void makeCourse() {
        this.makePPT();
        this.makeVideo();
        if (isHasNote()) {
            this.makeNote();
        }
        this.makePageke();
    }

    final void makePPT() {
        Log.i("method", "制作ppt");
    }

    final void makeVideo() {
        Log.i("method", "制作视频");
    }

    final void makeNote() {
        Log.i("method", "制作笔记");
    }

    //钩子方法,子类从写可以实现不同的逻辑
    public boolean isHasNote() {
        return false;
    }

    //抽象方法子类有不同的实现
    public abstract void makePageke();

}
